package originala;



import javax.swing.*;

import sun.tools.jar.resources.jar;
import java.awt.*;
import java.awt.event.*;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.text.*;
import java.util.*;
import java.lang.*;
import java.net.MalformedURLException;
import java.io.*;


/**
 * Erreserbak kontrolatzeko klaseak. 
 */

public class ErreserbaKontroladorea
    extends JPanel
    implements ActionListener, ItemListener
{
    // Kontrolak
    private JLabel etiketaErreserbaAgentea = new JLabel("Erreserba Agentea");
    private JLabel etiketaPertsonaKopurua = new JLabel("Pertsona Kopurua");
    private JLabel etiketaIrteerarenEzaugarriak = new JLabel("Irteeraren Ezaugarriak");
    private JLabel etiketaIrteeraData = new JLabel("Irteera Data");
    private JLabel etiketaBaieztapenZenbakia = new JLabel("Baieztapen Zenbakia");
    private JLabel etiketaIzena = new JLabel(" ");
    private JLabel etiketaHelbidea = new JLabel(" ");
    private JLabel etiketaTelefonoa = new JLabel(" ");
    // 
    protected JButton botoiaErreserbaBerria = new JButton("Erreserba Berria");
    protected JButton botoiaSartuIrteera = new JButton("Sartu Erreserba");
    protected JButton botoiaSartuTurista = new JButton("Sartu Turista");
    protected JButton botoiaSartuBidali = new JButton("Bidali");
    protected JButton botoiaSartuEzeztatu = new JButton("Ezeztatu");
    
    
    //Informazioa datu basetik eskuratu
 
    
    private JComboBox comboErreserbaAgentea = new JComboBox();
    private JComboBox comboPertsonaKopurua = new JComboBox();
    private JComboBox comboIrteerarenEzaugarriak = new JComboBox();
    private JComboBox comboIrteeraData = new JComboBox();
    //
    private JTextField testuEremuaBaieztapenZenbakia = new JTextField();
    private JLabel testuEremuaIzena = new JLabel(" ");
    private JLabel testuEremuaHelbidea = new JLabel(" ");
    private JLabel testuEremuaTelefonoa = new JLabel(" ");
    
    private JFrame gurasoa;
    int perkop=0;
    
	
    ErreserbarenBista erreserbaBista;

    private ErreserbaSistema LoturaErreserbaSistema;
public ErreserbaKontroladorea(ErreserbaSistema erreserbaSistema)
{
	Vector agenteIzenak;
    this.LoturaErreserbaSistema = erreserbaSistema;
    agenteIzenak = LoturaErreserbaSistema.lortuAgenteIzenak();
    //hasieran hutsik azalteko
    agenteIzenak.add(0, "");
    comboErreserbaAgentea = new JComboBox(agenteIzenak);
    //hasieran hutsik egon behar du
    comboIrteerarenEzaugarriak = new JComboBox();
    Iterator iterator;
    
    setLayout(new GridLayout(8, 3, 25, 25));
    setFont(new Font("Arial", Font.PLAIN, 12));
    setBackground(Color.lightGray);
    setBorder(BorderFactory.createEmptyBorder(25, 25, 25, 25));
    // errenkada 1
    add(etiketaErreserbaAgentea);
    add(comboErreserbaAgentea);
    add(new JLabel("            "));
    // errenkada 2
    add(etiketaPertsonaKopurua);
    add(comboPertsonaKopurua);
    add(botoiaErreserbaBerria);
    // errenkada 3
    add(etiketaIrteerarenEzaugarriak);
    add(comboIrteerarenEzaugarriak);
    add(new JLabel("            "));
    // errenkada 4
    add(etiketaIrteeraData);
    add(comboIrteeraData);
    add(new JLabel("            "));
    // errenkada 5
    add(etiketaBaieztapenZenbakia);
    add(testuEremuaBaieztapenZenbakia);
    add(botoiaSartuIrteera);
    // errenkada 6
    add(etiketaIzena);
    add(testuEremuaIzena);
    add(botoiaSartuTurista);
    // errenkada 7
    add(etiketaHelbidea);
    add(testuEremuaHelbidea);
    add(botoiaSartuBidali);
    // errenkada 8
    add(etiketaTelefonoa);
    add(testuEremuaTelefonoa);
    add(botoiaSartuEzeztatu);
    // Gehitu  event listener-ak
    botoiaErreserbaBerria.addActionListener(this);
    botoiaSartuIrteera.addActionListener(this);
    comboIrteerarenEzaugarriak.addItemListener(this);
    comboErreserbaAgentea.addItemListener(this);
    botoiaSartuTurista.addActionListener(this);
    botoiaSartuBidali.addActionListener(this);
    botoiaSartuEzeztatu.addActionListener(this);
    //Botoiak ipini
    botoiaErreserbaBerria.setEnabled(false);
    botoiaSartuIrteera.setEnabled(false);
    botoiaSartuTurista.setEnabled(false);
    botoiaSartuBidali.setEnabled(false);
    botoiaSartuEzeztatu.setEnabled(false);
    //
    // Pertsona Kopurua aukera laukia 
    for (int i = 1; i <= 10; i++)
        {
        comboPertsonaKopurua.addItem(Integer.toString(i));
    }
        
}

    public ErreserbaKontroladorea(ErreserbaSistema erreserbaSistema, JFrame nagusia) {
    	gurasoa = nagusia;
    	Vector agenteIzenak;
        this.LoturaErreserbaSistema = erreserbaSistema;
        agenteIzenak = LoturaErreserbaSistema.lortuAgenteIzenak();
        //hasieran hutsik azalteko
        agenteIzenak.add(0, "");
        comboErreserbaAgentea = new JComboBox(agenteIzenak);
        //hasieran hutsik egon behar du
        comboIrteerarenEzaugarriak = new JComboBox();
        Iterator iterator;
        
        setLayout(new GridLayout(8, 3, 25, 25));
        setFont(new Font("Arial", Font.PLAIN, 12));
        setBackground(Color.lightGray);
        setBorder(BorderFactory.createEmptyBorder(25, 25, 25, 25));
        // errenkada 1
        add(etiketaErreserbaAgentea);
        add(comboErreserbaAgentea);
        add(new JLabel("            "));
        // errenkada 2
        add(etiketaPertsonaKopurua);
        add(comboPertsonaKopurua);
        add(botoiaErreserbaBerria);
        // errenkada 3
        add(etiketaIrteerarenEzaugarriak);
        add(comboIrteerarenEzaugarriak);
        add(new JLabel("            "));
        // errenkada 4
        add(etiketaIrteeraData);
        add(comboIrteeraData);
        add(new JLabel("            "));
        // errenkada 5
        add(etiketaBaieztapenZenbakia);
        add(testuEremuaBaieztapenZenbakia);
        add(botoiaSartuIrteera);
        // errenkada 6
        add(etiketaIzena);
        add(testuEremuaIzena);
        add(botoiaSartuTurista);
        // errenkada 7
        add(etiketaHelbidea);
        add(testuEremuaHelbidea);
        add(botoiaSartuBidali);
        // errenkada 8
        add(etiketaTelefonoa);
        add(testuEremuaTelefonoa);
        add(botoiaSartuEzeztatu);
        // Gehitu  event listener-ak
        botoiaErreserbaBerria.addActionListener(this);
        botoiaSartuIrteera.addActionListener(this);
        comboIrteerarenEzaugarriak.addItemListener(this);
        comboErreserbaAgentea.addItemListener(this);
        botoiaSartuTurista.addActionListener(this);
        botoiaSartuBidali.addActionListener(this);
        botoiaSartuEzeztatu.addActionListener(this);
        //Botoiak ipini
        botoiaErreserbaBerria.setEnabled(false);
        botoiaSartuIrteera.setEnabled(false);
        botoiaSartuTurista.setEnabled(false);
        botoiaSartuBidali.setEnabled(false);
        botoiaSartuEzeztatu.setEnabled(false);
        //
        // Pertsona Kopurua aukera laukia 
        for (int i = 1; i <= 10; i++)
            {
            comboPertsonaKopurua.addItem(Integer.toString(i));
        }
}

	public void actionPerformed(ActionEvent event) throws NullPointerException
    {
    	try{
        NumberFormat numberFormat = NumberFormat.getCurrencyInstance();
        DateFormat dataFormat = DateFormat.getDateInstance();
        if (event.getSource() == botoiaErreserbaBerria)
            {
            // Sarrera
            String strNumberInParty = (String) comboPertsonaKopurua.getSelectedItem();
            int pertsonaKopurua = Integer.parseInt(strNumberInParty);
            String data =  (String) comboIrteeraData.getSelectedItem();
            String irteeraHandizkariarenIdentifikatzailea = (String) comboErreserbaAgentea.getSelectedItem();
            String bidaia = (String)comboIrteerarenEzaugarriak.getSelectedItem();
            //Ereduak sartu
            System.out.println(data);
            int prezioa = this.LoturaErreserbaSistema.lortuPrezioa((String) comboIrteerarenEzaugarriak.getSelectedItem());
            Integer kodea;
			try {
				kodea = LoturaErreserbaSistema.erreserbaBerria(pertsonaKopurua, irteeraHandizkariarenIdentifikatzailea,(String) data, bidaia,prezioa);
				testuEremuaBaieztapenZenbakia.setText(kodea.toString());
			} catch (RemoteException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (MalformedURLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (NotBoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
            //Integer kodea = LoturaErreserbaSistema.erreserbaBerria(pertsonaKopurua, irteeraHandizkariarenIdentifikatzailea,(String) data.elementAt(0));
            
            //Botoiak ipini
            botoiaErreserbaBerria.setEnabled(false);
            botoiaSartuIrteera.setEnabled(true);
            botoiaSartuTurista.setEnabled(false);
            botoiaSartuBidali.setEnabled(false);
            botoiaSartuEzeztatu.setEnabled(false);
        }
        if (event.getSource() == botoiaSartuIrteera)
            {
        	String irteeraData = null;
            //Date irteeraData = null;
            // Sarrera
            String zerbitzuarenKodea = (String) comboIrteerarenEzaugarriak.getSelectedItem();
            irteeraData = (String) comboIrteeraData.getSelectedItem();
            
     
            try
                {
                int baieztapenZenbakia = Integer.parseInt(testuEremuaBaieztapenZenbakia.getText());
                //Ereduak sartu
                LoturaErreserbaSistema.sartuIrteera(baieztapenZenbakia, zerbitzuarenKodea, irteeraData);
            }
            catch (NumberFormatException numberFormatException)
                {
                JOptionPane.showMessageDialog(
                    new JFrame(),
                    "Mesedez zenbaki oso bat sartu",
                    "Sarrera errore mezua",
                    JOptionPane.WARNING_MESSAGE);
            }
            //Botoiak ipini
            botoiaErreserbaBerria.setEnabled(false);
            botoiaSartuIrteera.setEnabled(false);
            botoiaSartuTurista.setEnabled(true);
            botoiaSartuBidali.setEnabled(false);
            botoiaSartuEzeztatu.setEnabled(false);
        }
        if (event.getSource() == botoiaSartuTurista)
            {

        	perkop=comboPertsonaKopurua.getSelectedIndex()+1;
        	String baiZenb2=testuEremuaBaieztapenZenbakia.getText();
    		int baiZenb =Integer.valueOf(baiZenb2).intValue();
        	Dialogoa dialog = new Dialogoa(gurasoa,this,LoturaErreserbaSistema, baiZenb);
            }
        if (event.getSource() == botoiaSartuBidali)
            {
        	System.out.println("sartu bidali");
            //Ereduak sartu
            if (LoturaErreserbaSistema.submit()==0){
            	JOptionPane.showMessageDialog(this, "Erreserba ezin izan da gorde barneko arazo baten erruz",
            			"Errorea",JOptionPane.ERROR_MESSAGE);
            	//botoiaSartuBidali.setText("Saiatu berriro");
            }
            else {
            	JOptionPane.showMessageDialog(this, "Erreserba ondo gorde da",
            			"Informazioa", JOptionPane.INFORMATION_MESSAGE);
         
            //Botoiak ipini
            botoiaErreserbaBerria.setEnabled(true);
            botoiaSartuIrteera.setEnabled(false);
            botoiaSartuTurista.setEnabled(false);
            botoiaSartuBidali.setEnabled(false);
            botoiaSartuEzeztatu.setEnabled(false);
            //Testu eremuak ezabatu
            testuEremuaBaieztapenZenbakia.setText("");
            testuEremuaIzena.setText("");
            testuEremuaHelbidea.setText("");
            testuEremuaTelefonoa.setText("");
            }
        }
        if (event.getSource() == botoiaSartuEzeztatu)
            {
            //Ereduak sartu
            LoturaErreserbaSistema.ezeztatu();
            //Botoiak ipini
            botoiaErreserbaBerria.setEnabled(true);
            botoiaSartuIrteera.setEnabled(false);
            botoiaSartuTurista.setEnabled(false);
            botoiaSartuBidali.setEnabled(false);
            botoiaSartuEzeztatu.setEnabled(false);
            //Testu eremuak ezabatu
            JOptionPane.showMessageDialog(this, "Erreserba ezabatu da. Datuak ezabatu dira",
                    "Informazioa", JOptionPane.WARNING_MESSAGE);
            testuEremuaBaieztapenZenbakia.setText("");
            testuEremuaIzena.setText("");
            testuEremuaHelbidea.setText("");
            testuEremuaTelefonoa.setText("");
        }
        
    	}
   
    	catch (NullPointerException e)
    	{
    		
    	}
    }
    
/**
 * Gertaeraren trataera
 * @param itemStateChanged java.awt.event.ItemEvent
 */
public void itemStateChanged(ItemEvent itemStateChanged)
{ 
    DateFormat dataFormat = DateFormat.getDateInstance();
    if(itemStateChanged.getSource() == comboIrteerarenEzaugarriak){
    // Combo boxa ezabatu		
    	comboIrteeraData.removeAllItems();
    	Vector datak = this.LoturaErreserbaSistema.lortuDatak((String) comboIrteerarenEzaugarriak.getSelectedItem());
    	for (int i=0;i<datak.size();i++){
    		comboIrteeraData.addItem(datak.elementAt(i));
    	}
    	botoiaErreserbaBerria.setEnabled(true);
    }
    
    if(itemStateChanged.getSource() == comboErreserbaAgentea){
    	comboIrteerarenEzaugarriak.removeAllItems();
    	Vector<String> bidaiak = this.LoturaErreserbaSistema.lortuBidaiak((String) comboErreserbaAgentea.getSelectedItem());
    	for (int i=0;i<bidaiak.size();i++)
    		comboIrteerarenEzaugarriak.addItem(bidaiak.elementAt(i));
 	
    }
}
public int getTuristaKop()
{
	return perkop;
}
}
